module ecs{
    /** 最基本，最常见的Renderable。 渲染次纹理/纹理。 */
    export class Sprite{
        /** 实际的Texture2D */
        public Texture2D: egret.Texture;
        /** Texture2D中此元素的矩形 */
        public readonly SourceRect: egret.Rectangle;
        /** 贴图区域的UV */
        public readonly Uvs: engine.RectangleF;
        /** 如果sourceRect的原点为0,0，则为中心。 这是sourceRect空间的中心。 */
        public readonly Center: engine.Vector2;
        /** 使用此Sprite时RenderableComponent应该使用的原点。 默认为中心。 */
        public Origin: engine.Vector2;

        constructor(texture: egret.Texture, sourceRect: egret.Rectangle, origin: engine.Vector2 = new engine.Vector2(sourceRect.width * 0.5, sourceRect.height * 0.5)){
            this.Texture2D = texture;
            this.SourceRect = sourceRect;
            this.Center = new engine.Vector2(sourceRect.width * 0.5, sourceRect.height * 0.5);
            this.Origin = origin;

            var inverseTexW = 1 / this.Texture2D.textureWidth
            var inverseTexH = 1 / this.Texture2D.textureHeight;

            this.Uvs.X = sourceRect.x * inverseTexW;
            this.Uvs.Y = sourceRect.y * inverseTexH;
            this.Uvs.Width = sourceRect.width * inverseTexW;
            this.Uvs.Height = sourceRect.height * inverseTexH;
        }
    }
}